Перейти к основному содержимому

3.07. Типы SQL-команд

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Типы SQL-команд

В ходе развития SQL сложилась устоявшаяся практика деления команд языка на несколько логических групп, каждая из которых отвечает за определённый аспект работы с данными и структурами базы данных. Это деление принято называть подъязыками SQL (на английском звучит лучше - sublanguages), хотя в повседневной практике чаще говорят «типы SQL-команд». Такая классификация не является строгой, поэтому скорее вольное деление.

  1. DDL - Data Definition Language (язык определения данных), используется для создания, изменения, удаления объектов структуры данных (таблиц, индексов, схем и т.д.).

Основные команды DDL:

  • CREATE - создание объекта (таблица, индекс);
  • ALTER - изменение структуры существующего объекта;
  • DROP - удаление объекта из базы данных;
  • TRUNCATE - удаление всех данных из таблицы с сохранением её структуры (иногда относят к DML, но чаще к DDL из-за эффекта на метаданные);
  • RENAME - переименование объекта (не во всех СУБД).

DDL-команды обычно неявно фиксируют транзакции, то есть COMMIT происходит автоматически после выполнения. О транзакциях мы поговорим отдельно.


  1. DML - Data Manipulation Language (язык манипулирования данными), предназначен для работы с данными внутри таблиц - добавления, изменения, удаления записей.

Основные команды DML:

  • INSERT - добавление новых строк;
  • UPDATE - изменение существующих строк;
  • DELETE - удаление строк;
  • MERGE (или UPSERT) - условное обновление или вставка данных (в зависимости от наличия записи).

DML-операции выполняются в рамках транзакций и могут быть отменены (ROLLBACK) или зафиксированы (COMMIT).


  1. DQL - Data Query Language (язык запросов к данным), используется для выборки из базы данных. Это основной инструмент для получения информации. Здесь одна основная команда - SELECT для извлечения данных по заданным критериям. Некоторые источники считают SELECT частью DML, поскольку он «манипулирует данными», извлекая их.

  1. DCL - Data Control Language (язык управления доступом к данным), управляет правами доступа пользователей и ролям в базе данных.

Основные команды DCL:

  • GRANT - предоставление привилегий.
  • REVOKE - отмена ранее выданных привилегий.

DCL нужен для обеспечения безопасности и аудита в многопользовательских системах.


  1. TCL - Transaction Control Language (язык управления транзакциями), управляет группами операций как единой транзакцией с возможностью подтверждения или отката изменений.

Основные команды TCL:

  • COMMIT - фиксация всех изменений текущей транзакции.
  • ROLLBACK - откат всех изменений текущей транзакции.
  • SAVEPOINT - установка точки отката внутри транзакции (позволяет откатиться не ко всему началу, а к промежуточному состоянию).

TCL особенно важен при работе с DML-операциями, где требуется атомарность (все или ничего).

Такое деление возникло не в самом стандарте SQL, а в учебных и методичеких материалах, а также в документации вендоров (Oracle, IBM, Microsoft и др.). Оно помогает структурировать обучение и понимание SQL, разделяя его функциональность по назначению. Поэтому граница между подъязыками не всегда чёткие (примеры - TRUNCATE и SELECT, о которых я упомянул ранее). Плюс, некоторые СУБД расширяют функциональность, добавляя новые команды, что усложняет такое деление на команды.